#include <cmath>
#include <iostream>
#include <vector>
#include <queue>
#include <algorithm>
#include <map>
#include <set>
#include <cstring>
#define endl "\n"
using namespace std;
char ch[110][110];
int sh[110][110];
int fangxiang[8][2]={{0,1},{1,0},{-1,0},{0,-1},{-1,-1},{-1,1},{1,-1},{1,1}};
struct node
{
	int x,y;
};
int k=0,n,m;
void bfs(int x,int y)
{
	queue<node> q;
	q.push({x,y});
	while(!q.empty())
	 {
		node p;
		p=q.front() ;
		q.pop() ;
		sh[p.x][p.y]=1;
		for(int i=0;i<8;i++)
		{
			int ax=p.x+fangxiang[i][0];
			int ay=p.y+fangxiang[i][1];
			if(ax>=0&&ax<n&&ay>=0&&ay<m&&sh[ax][ay]==0&&ch[ax][ay]=='W')
			{
				q.push({ax,ay});
			}
		}
	}
}
int main()
{
	cin>>n>>m;
	for(int i=0;i<n;i++)
	{
		for(int j=0;j<m;j++)
		{
			cin>>ch[i][j];
		}
	}
	for(int i=0;i<n;i++)
	{
		for(int j=0;j<m;j++)
		{
			if(ch[i][j]=='W'&&sh[i][j]!=1)
			{
				bfs(i,j);
				k++;
			}
		}
	}
	cout<<k<<endl;
	return 0;
}
